{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# XGBoost Parameter Tuning for RentListingInquries Dataset"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 第二步：调整树的参数：max_depth & min_child_weight\n",
    "(粗调，参数的步长为2；下一步是在粗调最佳参数周围，将步长降为1，进行精细调整)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "首先 import 必要的模块"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "from xgboost import XGBClassifier\n",
    "import xgboost as xgb\n",
    "\n",
    "import pandas as pd \n",
    "import numpy as np\n",
    "\n",
    "from sklearn.model_selection import GridSearchCV\n",
    "from sklearn.model_selection import StratifiedKFold\n",
    "\n",
    "from sklearn.metrics import log_loss\n",
    "\n",
    "from matplotlib import pyplot\n",
    "import seaborn as sns\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 读取数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": true,
    "scrolled": true
   },
   "outputs": [],
   "source": [
    "# path to where the data lies\n",
    "#dpath = './data/'\n",
    "train = pd.read_csv(\"RentListingInquries_FE_train.csv\")\n",
    "#train.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Variable Identification"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "选择该数据集是因为的数据特征单一，我们可以在特征工程方面少做些工作，集中精力放在参数调优上"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "y_train = train['interest_level']\n",
    "train = train.drop([\"interest_level\"], axis=1)\n",
    "X_train = np.array(train)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "各类样本不均衡，交叉验证是采用StratifiedKFold，在每折采样时各类样本按比例采样"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# prepare cross validation\n",
    "kfold = StratifiedKFold(n_splits=5, shuffle=True, random_state=3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# 第一轮参数调整得到的n_estimators最优值（255），其余参数继续默认值"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "用交叉验证评价模型性能时，用scoring参数定义评价指标。评价指标是越高越好，因此用一些损失函数当评价指标时，需要再加负号，如neg_log_loss，neg_mean_squared_error 详见sklearn文档：http://scikit-learn.org/stable/modules/model_evaluation.html#log-loss"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'max_depth': range(3, 10, 2), 'min_child_weight': range(1, 6, 2)}"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#max_depth 建议3-10， min_child_weight=1／sqrt(ratio_rare_event) =5.5\n",
    "max_depth = range(3,10,2)\n",
    "min_child_weight = range(1,6,2)\n",
    "param_test2_1 = dict(max_depth=max_depth, min_child_weight=min_child_weight)\n",
    "param_test2_1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/wlq666888/APPs/Anaconda3-5.0.1-Linux-x86_64/Anaconda3-5.0.1/lib/python3.6/site-packages/sklearn/model_selection/_search.py:761: DeprecationWarning: The grid_scores_ attribute was deprecated in version 0.18 in favor of the more elaborate cv_results_ attribute. The grid_scores_ attribute will not be available from 0.20\n",
      "  DeprecationWarning)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "([mean: -0.59938, std: 0.00309, params: {'max_depth': 3, 'min_child_weight': 1},\n",
       "  mean: -0.59912, std: 0.00332, params: {'max_depth': 3, 'min_child_weight': 3},\n",
       "  mean: -0.59903, std: 0.00305, params: {'max_depth': 3, 'min_child_weight': 5},\n",
       "  mean: -0.58926, std: 0.00390, params: {'max_depth': 5, 'min_child_weight': 1},\n",
       "  mean: -0.58897, std: 0.00376, params: {'max_depth': 5, 'min_child_weight': 3},\n",
       "  mean: -0.58884, std: 0.00313, params: {'max_depth': 5, 'min_child_weight': 5},\n",
       "  mean: -0.59113, std: 0.00460, params: {'max_depth': 7, 'min_child_weight': 1},\n",
       "  mean: -0.58970, std: 0.00437, params: {'max_depth': 7, 'min_child_weight': 3},\n",
       "  mean: -0.58905, std: 0.00385, params: {'max_depth': 7, 'min_child_weight': 5},\n",
       "  mean: -0.60629, std: 0.00609, params: {'max_depth': 9, 'min_child_weight': 1},\n",
       "  mean: -0.60055, std: 0.00398, params: {'max_depth': 9, 'min_child_weight': 3},\n",
       "  mean: -0.59747, std: 0.00403, params: {'max_depth': 9, 'min_child_weight': 5}],\n",
       " {'max_depth': 5, 'min_child_weight': 5},\n",
       " -0.5888352383661265)"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "xgb2_1 = XGBClassifier(\n",
    "        learning_rate =0.1,\n",
    "        n_estimators=251,  #第一轮参数调整得到的n_estimators最优值\n",
    "        max_depth=5,\n",
    "        min_child_weight=1,\n",
    "        gamma=0,\n",
    "        subsample=0.3,\n",
    "        colsample_bytree=0.8,\n",
    "        colsample_bylevel = 0.7,\n",
    "        objective= 'multi:softprob',\n",
    "        seed=3)\n",
    "\n",
    "\n",
    "gsearch2_1 = GridSearchCV(xgb2_1, param_grid = param_test2_1, scoring='neg_log_loss',n_jobs=-1, cv=kfold)\n",
    "gsearch2_1.fit(X_train , y_train)\n",
    "\n",
    "gsearch2_1.grid_scores_, gsearch2_1.best_params_,     gsearch2_1.best_score_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/wlq666888/APPs/Anaconda3-5.0.1-Linux-x86_64/Anaconda3-5.0.1/lib/python3.6/site-packages/sklearn/utils/deprecation.py:122: FutureWarning: You are accessing a training score ('mean_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "/home/wlq666888/APPs/Anaconda3-5.0.1-Linux-x86_64/Anaconda3-5.0.1/lib/python3.6/site-packages/sklearn/utils/deprecation.py:122: FutureWarning: You are accessing a training score ('split0_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "/home/wlq666888/APPs/Anaconda3-5.0.1-Linux-x86_64/Anaconda3-5.0.1/lib/python3.6/site-packages/sklearn/utils/deprecation.py:122: FutureWarning: You are accessing a training score ('split1_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "/home/wlq666888/APPs/Anaconda3-5.0.1-Linux-x86_64/Anaconda3-5.0.1/lib/python3.6/site-packages/sklearn/utils/deprecation.py:122: FutureWarning: You are accessing a training score ('split2_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "/home/wlq666888/APPs/Anaconda3-5.0.1-Linux-x86_64/Anaconda3-5.0.1/lib/python3.6/site-packages/sklearn/utils/deprecation.py:122: FutureWarning: You are accessing a training score ('split3_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "/home/wlq666888/APPs/Anaconda3-5.0.1-Linux-x86_64/Anaconda3-5.0.1/lib/python3.6/site-packages/sklearn/utils/deprecation.py:122: FutureWarning: You are accessing a training score ('split4_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "/home/wlq666888/APPs/Anaconda3-5.0.1-Linux-x86_64/Anaconda3-5.0.1/lib/python3.6/site-packages/sklearn/utils/deprecation.py:122: FutureWarning: You are accessing a training score ('std_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "{'mean_fit_time': array([ 183.308216  ,  161.81905031,  131.05259848,  202.10679531,\n",
       "         202.55194607,  204.00273023,  283.73028393,  280.24758511,\n",
       "         281.38895802,  361.47734499,  360.50988836,  332.44827247]),\n",
       " 'mean_score_time': array([ 0.64151945,  0.4803822 ,  0.45697255,  0.75946102,  0.757409  ,\n",
       "         0.85858788,  1.81132288,  1.6890594 ,  1.15507145,  2.82080331,\n",
       "         2.64863124,  1.98274741]),\n",
       " 'mean_test_score': array([-0.59937607, -0.59911851, -0.59903155, -0.58926083, -0.5889742 ,\n",
       "        -0.58883524, -0.59112655, -0.58970205, -0.58904765, -0.60628849,\n",
       "        -0.60055365, -0.59747203]),\n",
       " 'mean_train_score': array([-0.57403894, -0.5748946 , -0.57526048, -0.5032848 , -0.50901569,\n",
       "        -0.51299528, -0.39189146, -0.41402801, -0.428775  , -0.263115  ,\n",
       "        -0.31103062, -0.34023215]),\n",
       " 'param_max_depth': masked_array(data = [3 3 3 5 5 5 7 7 7 9 9 9],\n",
       "              mask = [False False False False False False False False False False False False],\n",
       "        fill_value = ?),\n",
       " 'param_min_child_weight': masked_array(data = [1 3 5 1 3 5 1 3 5 1 3 5],\n",
       "              mask = [False False False False False False False False False False False False],\n",
       "        fill_value = ?),\n",
       " 'params': [{'max_depth': 3, 'min_child_weight': 1},\n",
       "  {'max_depth': 3, 'min_child_weight': 3},\n",
       "  {'max_depth': 3, 'min_child_weight': 5},\n",
       "  {'max_depth': 5, 'min_child_weight': 1},\n",
       "  {'max_depth': 5, 'min_child_weight': 3},\n",
       "  {'max_depth': 5, 'min_child_weight': 5},\n",
       "  {'max_depth': 7, 'min_child_weight': 1},\n",
       "  {'max_depth': 7, 'min_child_weight': 3},\n",
       "  {'max_depth': 7, 'min_child_weight': 5},\n",
       "  {'max_depth': 9, 'min_child_weight': 1},\n",
       "  {'max_depth': 9, 'min_child_weight': 3},\n",
       "  {'max_depth': 9, 'min_child_weight': 5}],\n",
       " 'rank_test_score': array([10,  9,  8,  4,  2,  1,  6,  5,  3, 12, 11,  7], dtype=int32),\n",
       " 'split0_test_score': array([-0.59430293, -0.59332877, -0.59413356, -0.5823828 , -0.58277314,\n",
       "        -0.58395464, -0.58372055, -0.58145939, -0.58296277, -0.59545303,\n",
       "        -0.5949328 , -0.59131835]),\n",
       " 'split0_train_score': array([-0.57573572, -0.57695709, -0.57683754, -0.50481556, -0.51059706,\n",
       "        -0.51425963, -0.39296148, -0.41629873, -0.43009456, -0.26345   ,\n",
       "        -0.31262854, -0.33979208]),\n",
       " 'split1_test_score': array([-0.59798161, -0.59771632, -0.59728633, -0.58783185, -0.58671431,\n",
       "        -0.58680386, -0.59117507, -0.58953015, -0.5877197 , -0.60464501,\n",
       "        -0.59716106, -0.59577217]),\n",
       " 'split1_train_score': array([-0.57473074, -0.57546932, -0.57601771, -0.50368183, -0.50936452,\n",
       "        -0.51400687, -0.39166246, -0.41372244, -0.4287307 , -0.26542915,\n",
       "        -0.31305225, -0.3412164 ]),\n",
       " 'split2_test_score': array([-0.59969707, -0.60034426, -0.59944827, -0.59119125, -0.5903318 ,\n",
       "        -0.59023494, -0.59015334, -0.5910974 , -0.58866908, -0.60777073,\n",
       "        -0.60157946, -0.59814488]),\n",
       " 'split2_train_score': array([-0.57396727, -0.57453411, -0.5748578 , -0.50266477, -0.50891284,\n",
       "        -0.51251478, -0.39071241, -0.41264864, -0.42790206, -0.26321777,\n",
       "        -0.31216823, -0.34244376]),\n",
       " 'split3_test_score': array([-0.60320498, -0.60243329, -0.602285  , -0.59131859, -0.5922403 ,\n",
       "        -0.59022561, -0.59254689, -0.59257532, -0.59137556, -0.61057805,\n",
       "        -0.6032793 , -0.59840892]),\n",
       " 'split3_train_score': array([-0.57294603, -0.5738532 , -0.57421406, -0.50455063, -0.50901558,\n",
       "        -0.5125044 , -0.39061838, -0.41307041, -0.42771881, -0.26180235,\n",
       "        -0.30753965, -0.33698722]),\n",
       " 'split4_test_score': array([-0.60169449, -0.60177073, -0.60200548, -0.59358097, -0.59281263,\n",
       "        -0.5929584 , -0.59803898, -0.59384923, -0.59451281, -0.61299769,\n",
       "        -0.60581723, -0.6037177 ]),\n",
       " 'split4_train_score': array([-0.57281494, -0.57365927, -0.57437528, -0.5007112 , -0.50718846,\n",
       "        -0.51169073, -0.39350256, -0.41439983, -0.42942888, -0.26167573,\n",
       "        -0.30976441, -0.3407213 ]),\n",
       " 'std_fit_time': array([  4.10644892,  18.90580467,   4.99205734,   1.13853704,\n",
       "          1.44638802,   3.75944983,   2.38326236,   1.63268581,\n",
       "          3.40527829,   3.73372605,   2.93995329,  27.90782756]),\n",
       " 'std_score_time': array([ 0.09863064,  0.03076724,  0.0071565 ,  0.04984147,  0.02981515,\n",
       "         0.19202964,  0.51621634,  0.46905904,  0.04799017,  0.13387247,\n",
       "         0.11254007,  0.56371189]),\n",
       " 'std_test_score': array([ 0.00309261,  0.00331701,  0.00305415,  0.00389802,  0.00376309,\n",
       "         0.00312529,  0.00459541,  0.00436745,  0.00385266,  0.00609453,\n",
       "         0.00398213,  0.00402714]),\n",
       " 'std_train_score': array([ 0.00110049,  0.00121034,  0.00101007,  0.00149071,  0.00109286,\n",
       "         0.00097935,  0.00116653,  0.00128121,  0.00089981,  0.00136181,\n",
       "         0.00208445,  0.00183425])}"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "gsearch2_1.cv_results_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Best: -0.588835 using {'max_depth': 5, 'min_child_weight': 5}\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/wlq666888/APPs/Anaconda3-5.0.1-Linux-x86_64/Anaconda3-5.0.1/lib/python3.6/site-packages/sklearn/utils/deprecation.py:122: FutureWarning: You are accessing a training score ('mean_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "/home/wlq666888/APPs/Anaconda3-5.0.1-Linux-x86_64/Anaconda3-5.0.1/lib/python3.6/site-packages/sklearn/utils/deprecation.py:122: FutureWarning: You are accessing a training score ('std_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "/home/wlq666888/APPs/Anaconda3-5.0.1-Linux-x86_64/Anaconda3-5.0.1/lib/python3.6/site-packages/sklearn/utils/deprecation.py:122: FutureWarning: You are accessing a training score ('split0_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "/home/wlq666888/APPs/Anaconda3-5.0.1-Linux-x86_64/Anaconda3-5.0.1/lib/python3.6/site-packages/sklearn/utils/deprecation.py:122: FutureWarning: You are accessing a training score ('split1_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "/home/wlq666888/APPs/Anaconda3-5.0.1-Linux-x86_64/Anaconda3-5.0.1/lib/python3.6/site-packages/sklearn/utils/deprecation.py:122: FutureWarning: You are accessing a training score ('split2_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "/home/wlq666888/APPs/Anaconda3-5.0.1-Linux-x86_64/Anaconda3-5.0.1/lib/python3.6/site-packages/sklearn/utils/deprecation.py:122: FutureWarning: You are accessing a training score ('split3_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "/home/wlq666888/APPs/Anaconda3-5.0.1-Linux-x86_64/Anaconda3-5.0.1/lib/python3.6/site-packages/sklearn/utils/deprecation.py:122: FutureWarning: You are accessing a training score ('split4_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAZgAAAELCAYAAADkyZC4AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4wLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvpW3flQAAIABJREFUeJzt3Xl8VNX5+PHPM5PJHkgI+yYIqChL\nCBRRvyKIKG4oVRE0/sSv1W9rrbW21qW2Vutuv+7Ufq1iVUBxFy3IoghWqwghLOICImrYgoGwZE/m\n+f0xN8MkTPbcTJbn/XrNKzPnnnPvM1fDk3PuueeKqmKMMcY0NU+kAzDGGNM2WYIxxhjjCkswxhhj\nXGEJxhhjjCsswRhjjHGFJRhjjDGusARjjDHGFZZgjDHGuMISjDHGGFdERTqASOrcubP269cv0mEY\nY0yrsnr16h9VtUtt9dp1gunXrx+rVq2KdBjGGNOqiMh3dalnQ2TGGGNcYQnGGGOMKyzBGGOMcUW7\nvgZjjKmf0tJSsrOzKSoqinQophnExsbSu3dvfD5fg9pbgjHG1Fl2djZJSUn069cPEYl0OMZFqkpu\nbi7Z2dn079+/QfuwITJjTJ0VFRWRmppqyaUdEBFSU1Mb1Vu1BGOMqRdLLu1HY/9bW4JpgLK9e8md\n9Szl+/ZFOhRjjGmxLME0wMEPlpPzwANsGjeeHbf/meJNmyIdkjHGtDiWYBogecr59H/9NTqceSb7\n3niDLedO5rsZV3Bg6VK0vDzS4RnTZuXl5fG3v/2tQW0feeQRCgoKmjiipjFu3LgGryry5ptvsnHj\nxnrtq6ioiNGjRzN8+HCOO+44br/99gYduzaWYBoo9thj6XnP3Qxc/gFdbriBkq1byb72V3wz8XRy\nn36a8ry8SIdoTJvTVhNMY1RNMHURExPD+++/z9q1a8nKyuLdd9/lk08+afLYbJpyI0WlpND56qtI\n/e8rOPDe++ydPZucv/4vux9/go6TzyUlI4PYo4+OdJjGNLk73v6cjdv3N+k+j+3ZgdvPPa7a7Tff\nfDPffPMNaWlpTJw4ka5du/Lyyy9TXFzMlClTuOOOO8jPz2fq1KlkZ2dTXl7OH//4R3bt2sX27dsZ\nP348nTt3ZtmyZWH3n5iYyC9/+UuWLl1KSkoK99xzD7///e/5/vvveeSRR5g8eTJbt27lsssuIz8/\nH4AnnniCE088kTfeeIOZM2eyZMkSdu7cySmnnMKKFSvo3r37YccpLCzkiiuuYOPGjQwePJjCwsLg\ntsWLF3P77bdTXFzMgAEDePbZZ0lMTKRfv35cfPHFwdjnzp1LTk4O8+fPZ/ny5dx111289tprALzy\nyitcc8015OXl8cwzz3DyySdXOr6IkJiYCATubSotLXVl8ob1YJqIREXR4YzTOeKF5+n/1pt0nHwu\n+95+h2/PO5/vMi5j/6LFaFlZpMM0plW77777GDBgAFlZWUycOJFNmzaxcuVKsrKyWL16NStWrODd\nd9+lZ8+erF27lg0bNjBp0iSuu+46evbsybJly6pNLgD5+fmMGzeO1atXk5SUxG233caSJUt44403\n+NOf/gRA165dWbJkCZmZmcybN4/rrrsOgClTptC9e3dmzpzJVVddxR133BE2uQA8+eSTxMfHs27d\nOv7whz+wevVqAH788Ufuuusuli5dSmZmJqNGjeKhhx4KtuvQoQMrV67k2muv5frrr+fEE09k8uTJ\nPPjgg2RlZTFgwAAAysrKWLlyJY888gh33HEHANu3b+ess84K7qu8vJy0tDS6du3KxIkTOf744xvx\nXyY868G4IPboo+nxl7/Q9be/Je+119g7Zy7bfv1ronr0IGXaNJKnXkRUSkqkwzSmUWrqaTSHxYsX\ns3jxYkaMGAHAwYMH2bRpEyeffDK/+93vuOmmmzjnnHMO++u9JtHR0UyaNAmAoUOHEhMTg8/nY+jQ\noWzduhUI/MV/7bXXkpWVhdfr5euvvw62f/zxxxkyZAhjxoxh+vTp1R5nxYoVwcQ0bNgwhg0bBsAn\nn3zCxo0bOemkkwAoKSnhhBNOCLar2Of06dP5zW9+U+3+f/rTnwIwcuTIYNw9e/ZkwYIFwTper5es\nrCzy8vKYMmUKGzZsYMiQIXU6T3VlCcZF3uRkUq+8kk4zZnBw2TL2zJ7D7ocf5seZM+lwzjl0yriU\n2GOPjXSYxrRKqsott9zC//zP/xy2bfXq1SxYsIBbbrmF008/Pdj7qI3P5wsOFXk8HmJiYoLvy5wR\niIcffphu3bqxdu1a/H4/sbGxwfbbtm3D4/Gwa9cu/H4/Hk/1g0ThhqRUlYkTJ/Liiy/W2qamIa2K\nuL1ebzDu6iQnJzNu3DjefffdJk8wNkTWDMTrJem00zjin8/Sf/5bdJwyhf0LF/LtTy9g6yWXsn/B\nArS0NNJhGtPiJSUlceDAAQDOOOMMZs2axcGDB4HAP+45OTls376d+Ph4MjIy+N3vfkdmZuZhbRtj\n37599OjRA4/HwwsvvEC5M3O0rKyMK664grlz5zJ48OBKQ1tVjR07ljlz5gCwYcMG1q1bB8CYMWP4\n6KOP2Lx5MwAFBQWVekjz5s0L/qzo2TTke+3evZs8ZyJSYWEhS5cu5ZhjjqnXPurCejDNLPaoo+hx\nx5/pesNvyHv9DfbOncu2G35LVNeupEyfRvLUqUSlpkY6TGNapNTUVE466SSGDBnCmWeeySWXXBL8\nhzYxMZHZs2ezefNmbrzxRjweDz6fjyeffBKAq6++mjPPPJMePXrUeB2mNtdccw0XXHABr7zyCuPH\njychIQGAe+65h5NPPpmTTz6ZtLQ0fvKTn3D22WczePDgw/bxi1/8giuuuIJhw4aRlpbG6NGjAejS\npQv//Oc/mT59OsXFxQDcddddHHXUUQAUFxdz/PHH4/f7g72cadOmcdVVV/HYY4/x6quvVhv39u3b\n+dnPfsaCBQvYsWMHl19+OeXl5fj9fqZOnco555zT4HNSHVHVJt9pazFq1CiN9BMttbycg8tXsHf2\nbPI//hjx+ehw1lmkZGQQN7Rpu6vGNNYXX3wR9h9M476KJ/B27ty5WY8b7r+5iKxW1VG1tbUeTISJ\n10vSqeNJOnU8xVu2sHf2HPLefJN9b71F3PDhpGRk0OGM05Ho6EiHaowx9eLqNRgRmSQiX4nIZhG5\nuZo6U0Vko4h8LiJzQ8ovF5FNzuvykPIPnH1mOa+uTnmMiMxzjvWpiPRz87u5IebII+n+pz8yaPkH\ndLv1Fsry9rL9xhvZNGECu5+YSdnu3ZEO0Zg24fjjjyctLa3Sa/369U1+nEWLFh12nClTpjRoX1u3\nbm323ktjuTZEJiJe4GtgIpANfAZMV9WNIXUGAS8Dp6rqXhHpqqo5ItIJWAWMAhRYDYx06nwA/E5V\nV1U53jXAMFX9uYhMA6ao6sU1xdgShshqon4/+f/+N3temE3+hx+Cz0eHM86g02UZxA0fHunwTDtk\nQ2TtT2OGyNzswYwGNqvqFlUtAV4CzqtS5ypgpqruBVDVHKf8DGCJqu5xti0BJtVyvPOA55z3rwIT\npJWvKy4eD4ljx9L3H09x5MIFpEybxsFly9h68TS+vWgq+956C39JSaTDNMaYsNxMML2AH0I+Zztl\noY4CjhKRj0TkExGZVMe2zzrDY38MSSLBNqpaBuwD2sx0rJj+/en+h1sZuHw53W67Df/Bg2y/6WY2\njz+V3Y89RumunNp3YowxzcjNBBOu91B1PC4KGASMA6YDT4tIci1tL1XVocDJzuuyehwPEblaRFaJ\nyKrdrfCahjcxgU4Zl3Lkv96hz9NPEzdkCD8++Xc2T5jAthtuoCBzDe15ZqAxpuVwM8FkA31CPvcG\ntoep85aqlqrqt8BXBBJOtW1VdZvz8wAwl8BQXKXjiUgU0BHYUzUoVX1KVUep6qguXbo06gtGkng8\nJP7XSfT5v78zYNG7dLr0Ug5++G++u+QStl5wIXmvv4HfmUdvjDGR4GaC+QwYJCL9RSQamAbMr1Ln\nTWA8gIh0JjBktgVYBJwuIikikgKcDiwSkSinHiLiA84BNjj7mg9UzDa7EHhf28mf8tF9+9LtlpsZ\n9MEyuv/5dvwlxey49VY2jxtPzsOPULpzZ6RDNKZJtNXl+pv7eTAQuK9m6NChpKWlMWpUrdfrG8S1\nBONcB7mWQLL4AnhZVT8XkTtFZLJTbRGQKyIbgWXAjaqaq6p7gL8QSFKfAXc6ZTEEEs06IAvYBvzD\n2dczQKqIbAZuAMJOi27LPAkJpEybxpFvv03fZ2cRl55O7lNPsXnCaWT/+noKVq2y4TPTqrXVBNMY\nDXkeTIVly5aRlZXV4ORWG1dvtFTVBcCCKmV/CnmvBJLBDWHazgJmVSnLB0ZWc6wi4KLGR936iQgJ\nJ5xAwgknUJKdzd65L5L36qscWLSImGOOoVPGpXQ45xw8IYv0GVNvC2+GnU1870j3oXDmfdVutufB\nNM3zYJqLLXbZxkX37k2339/IoOUf0P3OO6C8nB23/ZHNp4wj569/pXTbtkiHaEyd2fNgmu55MCLC\n6aefzsiRI3nqqaca8V+lerZUTDvhiYsjZepUki+6iIKVn7F39mxyZz1L7qxnSZpwKikZlxE/+ieu\nPNXOtFE19DSagz0PpnHPg/noo4/o2bMnOTk5TJw4kWOOOYaxY8fW6TzVlSWYdkZESDh+NAnHj6Z0\n2zb2vvQSeS+/woElS4kZNIiUjAw6nnsOnvj4SIdqTI3seTCNex5Mz549gUCPbMqUKaxcubLJE4wN\nkbVjvl696Prb3zJw+Qf0uPsu8HrZefvtbBo3nl33P0BJdnakQzSmEnseTNM8DyY/Pz/YJj8/n8WL\nFzf5w8bAejAG8MTGknzBBXT86U8pXL2aPbPnsOf559nzz3+SOH48nTIuJf6EE2z4zEScPQ+maZ4H\ns2vXruCim2VlZVxyySXBocGmZM+DacGLXUZS6c6d7H3xJfJefpnyvXuJHjCAThmX0nHyZDzOL5Rp\nf2yxy8hpjc+DsSEyE5ave3e6/uZ6Bn6wjB733osnNpadd9wZGD67915Kvvsu0iEaY1o4GyIzNfLE\nxJA85Xw6nn8ehVlZ7H1hNnvmzGXP8y+QOHYsKRkZJJx0IlLDxUxjWprjjz8+OARV4YUXXmDo0KFN\nepxFixZx0003VSrr378/b7zxRr33VTEbrDWxITIbIqu30l055M2bx9558yjPzSW6X7/A7LPzz8eb\naMNnbZkNkbU/NkRmmpWvW1e6XPcrBi57n54P3I+nQwd23XUXm085hZ133U3xt99GOkRjTAtgCcY0\nmCc6mo6TJ9P/5Xn0m/cSiaeeyt5589hy5ll8f9XVHFy+HPX7Ix2mMSZCLMGYJhE3fDi9HnyAQe+/\nR+dfXUvxl1/yw//8nG/OPJM9zz9PeRPcf2CMaV0swZgmFdWlC11++UsGvreUnn/9K1Epndh1z71s\nOmUcO++8k+Jvvol0iKYVa6urKTf3cv1fffUVaWlpwVeHDh145JFHGnT8mliCMa6Q6Gg6nnM2/V56\nkX6vvkqH008n75VX2XL2OXz/31dy4P1lqHMHtDF11VYTTGM0ZLn+o48+mqysrOAiofHx8cEbL5uS\nJRjjurghx9HzvnsZ+MEyulz/a4q/+Ybsa67hmzMmkTvrWcr37Yt0iKaVCF2u/8Ybb+TBBx/kJz/5\nCcOGDeP2228HAkufnH322QwfPpwhQ4Ywb948HnvsseBy/ePHj692/4mJidx0002MHDmS0047jZUr\nVzJu3DiOPPJI5s8PPC9x69atnHzyyaSnp5Oens7HH38MwBtvvMFpp52GqrJjxw6OOuoodlbzsL/C\nwkKmTZvGsGHDuPjiiw9brv+EE04gPT2diy66KLgUTr9+/bjpppsYPXo0o0ePZvPmzXz88cfMnz+f\nG2+8kbS0NL5xRgheeeUVRo8ezVFHHcWHH35Y4zl97733GDBgAEcccUQd/yvUnd0HY5pNVGoqnX/+\nc1KvvJIDS5eyZ/Ycch54gN2PP07HyZPplHEpMYMGRTpMU0f3r7yfL/d82aT7PKbTMdw0+qZqt993\n331s2LCBrKwsFi9ezKuvvsrKlStRVSZPnsyKFSvYvXs3PXv25F//+hcQWDusY8eOPPTQQyxbtqzG\nO+Erluu///77mTJlSnC5/o0bN3L55ZczefLk4HL9sbGxbNq0ienTp7Nq1SqmTJnCa6+9xsyZM3n3\n3XfrvFz/unXrSE9PByov15+QkMD999/PQw89FFyss2K5/ueff57rr7+ed955h8mTJ3POOedw4YUX\nBvdfsVz/ggULuOOOO1i6dGmlpWJCvfTSSzWu/NwYlmBMsxOfjw5nnkmHM8+kaONG9syZw7433iBv\n3jzix4yhU8alJI4fj3i9kQ7VtGC2XH/jluuv2P/8+fO59957az03DWEJxkRU7LHH0vPuu+n6u9+R\n98qr7H3xRbKv/RW+nj1JuWQ6yRdeiDc5OdJhmjBq6mk0B1uuv3HL9QMsXLiQ9PR0unXrVm2dxrBr\nMKZFiEpJofPVVzFwyWJ6PfYovl69yPnr/7LplHHs+OMfKfrqq0iHaFoAW66/aZbrr/Diiy+6NjwG\nLicYEZkkIl+JyGYRubmaOlNFZKOIfC4ic0PKLxeRTc7rcqcsXkT+JSJfOvXvC6k/Q0R2i0iW8/qZ\nm9/NuEOiouhw+ukc8cLz9H/rTTpOnsy+t9/h2/PO57uMy9i/aDFaw19kpm0LXa5/yZIlweX6hw4d\nyoUXXsiBAwdYv349o0ePJi0tjbvvvpvbbrsNOLRcf00X+evimmuu4bnnnmPMmDF8/fXXYZfrf+ih\nh3j66af54osvwu7jF7/4BQcPHmTYsGE88MADYZfrHzZsGGPGjOHLLw9d56pYrv/RRx/l4YcfBgLL\n9T/44IOMGDEieJE/nKqPTC4oKGDJkiXB4TQ3uLYWmYh4ga+BiUA28BkwXVU3htQZBLwMnKqqe0Wk\nq6rmiEgnYBUwClBgNTASKAaOV9VlIhINvAfco6oLRWQGMEpVr61rjLYWWetQnpdH3muvsXfOXEq3\nbyeqRw9Spk0jeepFRKWkRDq8dsXWIoscW66/stHAZlXdoqolwEvAeVXqXAXMVNW9AKqa45SfASxR\n1T3OtiXAJFUtUNVlTt0SIBPo7eJ3MC2ANzmZ1CuvZMCSxfSe+QTR/Y5g98MPs/mUcWy/9Q8U1fMe\nAGNM83DzIn8v4IeQz9nA8VXqHAUgIh8BXuDPqvpuNW17hTYUkWTgXODRkOILRGQsgZ7Tb1Q1dB+m\nlROvl6QJE0iaMIHiTZsCs8/ems++118nLj2dThmXkjRxIuLzRTpU08LZcv3Nw80EE26KQ9XxuChg\nEDCOQE/kQxEZUltbEYkCXgQeU9UtTvHbwIuqWiwiPweeA049LCiRq4GrAfr27Vuf72NakJhBg+jx\n5z/T9YYbyHv9dfbOmcu2G35LVNeupEyfRvLUqUSlpkY6TNNCffrpp81ynDPOOIMzzjijWY7VErk5\nRJYN9An53BvYHqbOW6paqqrfAl8RSDi1tX0K2KSqwcVzVDVXVSv+JPkHgWs2h1HVp1R1lKqO6tKl\nSwO+lmlJvB06kDpjBgPeXUjvJ/9GzKBB7H70MTaPG8/2m26mcP2GSIdoTLvlZoL5DBgkIv2dC/LT\ngPlV6rwJjAcQkc4Ehsy2AIuA00UkRURSgNOdMkTkLqAjcH3ojkSkR8jHyUD46RumTRKvl6Tx4+n7\nzNMcueBfJF90EQeWLGHrRRex9eJp7Hv7HbSkJNJhGtOuuJZgVLUMuJZAYvgCeFlVPxeRO0VkslNt\nEZArIhuBZcCNTk9kD/AXAknqM+BOVd0jIr2BPwDHAplVpiNf50xdXgtcB8xw67uZli3myCPp/qc/\nMnD5B3S79VbK8vay/cYb2TRhArufmEnZ7t2RDtGYdsEemWzTlNs89fvJ//e/2TN7NvkrPgSfjw5n\nnEGnyzKIGz480uG1KjZNuf1pqdOUjWkRxOMhcexY+j71FEcuXEDKtGkcXLaMrRdP49uLprLvrbfw\n2/BZq9BWl+tv7ufBADz66KMMGTKE4447zpVnwYAlGNPOxPTvT/c/3MrA5cvp9sfb8B88yPabbmbz\n+FPZ/dhjlO7KqX0nJmLaaoJpjIY8D2bDhg384x//YOXKlaxdu5Z33nmHTZs2NXlslmBMu+RNTKDT\npZdy5L/eoc/TTxM3dCg/Pvl3Nk+YwLYbbqAgcw3tefi4pbLnwTTN82C++OILxowZQ3x8PFFRUZxy\nyikNujenNraasmnXxOMh8b9OIvG/TqLk++/ZO2cuea+/zv4FC4k99lhSMjLocPZZeJzVac0hO++5\nh+IvmvZ5MDGDj6H7rbdWu92eB9M0z4MZMmQIf/jDH8jNzSUuLo4FCxYwalStl1TqzRKMMY7ovn3p\ndsvNdLnuV+x7+232zJ7NjltvJefBB0m+6CJSpk/D16NH7TsyzcKeB9Pw58EMHjyYm266iYkTJ5KY\nmMjw4cOJimr6dGAJxpgqPAkJgcU0L76Ygk8/Zc8Ls8l9+mlyn3mGpNNOC8w+GzmyxudxtAc19TSa\ngz0PpnHPg7nyyiu58sorAbj11lvp3bvpl3W0azDGVENESBgzhj4zn2DA4sV0mnE5+Z98wncZl/Ht\nlJ+S9+qr+IuKIh1mu2LPg2m658Hk5AQmtHz//fe8/vrrrjwXxhKMMXUQ3bsX3W68kUEfLKP7nXeA\n38+O2/7I5lPGkfPXv1K6bVukQ2wX7HkwTfc8mAsuuIBjjz2Wc889l5kzZ5LiwqMv7EZLu9HSNICq\nUvDZZ+x9YTYH3nsPgKQJp5JyaQbxx49us8NndqNl5LTG58HYNRhjGkBESBg9moTRoyndvp29L75E\n3iuvcGDJUmIGDSIlI4OO556DJz4+0qEaEzHWg7EejGki/qIi9v/rX+yZPYfiL77A06EDyRdcQMql\nlxDtwgXUSGgrPZjW+DyYSGlMD8YSjCUY08RUlcLMTPbMns2BxUvA7ydx/Hg6ZVxK/AkntOrhs7aS\nYEzd2RCZMS2IiBA/ciTxI0dSunMne196ibyXX+H7998nesAAOmVcSsfJk/E4F4dbG1Vt1UnS1F1j\nOyA2i8wYF/m6d6fr9dczcNn79Lj3Xjyxsey84042jRvPrnvvpeS77yIdYr3ExsaSm5try+i0A6pK\nbm5upft86suGyGyIzDQjVaUwK4u9s+ewf9EiKC8ncexYUjIySDjpRKSGG/NagtLSUrKzsymy+3/a\nhdjYWHr37o3P56tUbtdg6sASjImk0l055M2bx96XX6b8xx+J7tcvMPvs/PPxJrbO4TPTPliCqQNL\nMKYl8JeUcGDRIva8MJuidevwJCTQ8fzzSRw3jri04XiTkiIdojGVWIKpA0swpqUpXLeOPbNns3/h\nu1BaCiLEHHUUcekjiB8xgrj0dHy9etlFdhNRlmDqwBKMaanKD+ZTtG4tBWvWUJi5hsKsLPz5+QBE\ndelC3IgRgaSTnk7s4MFIlTFyY9xk05SNacW8iQkknHgiCSeeCICWl1O8eTOFmZkUZK6hMDOTA4sX\nAyCxscQNGUJcenog6aSl4U1OjmT4xgAu92BEZBLwKOAFnlbV+8LUmQr8GVBgrape4pRfDtzmVLtL\nVZ9zykcC/wTigAXAr1VVRaQTMA/oB2wFpqrq3prisx6Mac1Kd+VQuGYNhWsyKViTRdHGjeAszR49\nYADx6SOIG5FO3Ig0ovv1s2E102QiPkQmIl7ga2AikA18BkxX1Y0hdQYBLwOnqupeEemqqjlOslgF\njCKQeFYDI506K4FfA58QSDCPqepCEXkA2KOq94nIzUCKqlZeo6EKSzCmLfEXFlK4fn1gSG3NGgqy\nsvDv2weAt1Mn4kaMIH5EGnHp6cQed5w9pdM0WEsYIhsNbFbVLU5ALwHnARtD6lwFzKzoaahqjlN+\nBrBEVfc4bZcAk0TkA6CDqv7HKX8eOB9Y6Ox7nNP+OeADoMYEY0xb4omLCy7ACaB+PyVbthy6jpOZ\nyUFn5Wfx+YgdMiSQdNJHEDdiBFGpqZEM37RBbiaYXsAPIZ+zgeOr1DkKQEQ+IjCM9mdVfbeatr2c\nV3aYcoBuqroDQFV3iEjXJvoexrRK4vEQM3AgMQMHknLRRQCU5eZSmJVFQWYmhZlr2PvCC+yZNQsA\n3xF9iR+RHpw8EH3kkS3+xk/TsrmZYMIN+FYdj4sCBhHoefQGPhSRITW0rcs+aw5K5GrgaoC+ffvW\np6kxrV5UaipJEyaQNGECELgHp2jD54HrOJlrOLhiBfvefBMAT8eOxKUNDySdESOIGzYUT1xcJMM3\nrYybCSYb6BPyuTewPUydT1S1FPhWRL4ikHCyOTTcVdH2A6e8d5Xyin3uEpEeTu+lB5BDGKr6FPAU\nBK7B1P9rGdN2eKKjiU8PDJOlXhlYyqb0u+8CM9XWrKFgTSa7l68IVI6KInbwYOJGpBGfnk7ciHR8\n3WygwFTPzYv8UQQu8k8AthG4yH+Jqn4eUmcSgQv/l4tIZ2ANkMahC/vpTtVMAhf594jIZ8CvgE8J\nXOR/XFUXiMiDQG7IRf5Oqvr7mmK0i/zG1K48L4+CrCwK12RRmJlJ4fr1qLMWma9Xr0r35MQMGoR4\nvRGO2Lgt4hf5VbVMRK4FFhG4vjJLVT8XkTuBVao639l2uohsBMqBG1U11/kCfyGQlADurLjgD/yC\nQ9OUFzovgPuAl0XkSuB74CK3vpsx7Yk3OZmkceNIGjcOAC0tpejLL4P35BR8+in733kHAE9CAnHD\nhxOXnk58+ghihw23ddXaMbuT33owxjSKqlK6bbtzHSeTwjVZFH/1FaiCx0PM0UcHl7mJH5FGVM+e\ndk9OKxfx+2Bag4YmmIKSMnIPluDzeojyCj5P4GeUV4jyePB67JfHtG/lBw9SmLU2MKSWtYbCrLX4\nCwoAiOrW7dDaaiPSiT3maFvqppWJ+BBZW7bsy938cm5mtdtFOJR0PBJMRFEeDz6vEOX1EOWRymVO\nfZ+zLbRNRV1fsF3VNof24w1TVnXfoccPd7zQGH1eDx7B/uI09eJNTCTxv04i8b9OAkDLyij++uvg\nPTkFazI5sPBdACQujrihQ4MJphBiAAAgAElEQVTXceLS0vB26BDJ8E0TqbUHIyIDgGxVLRaRccAw\n4HlVzWuG+FzV0B7MD3sK+M+WXMrKlTK/n9JypazcT5lfKS33U+7Xw8rKypVSv79Sm/KQbcH9OHVK\nnbYV74N1K8r8fpqz81lzEgy891Ykv9oSoseD1ytOvcq9wKptvJ7QHqKnmjZOYg2JKbRXWXXfXo9Y\nwmwBSnfuDMxUc24CLfrySygvD6wgPXBAYJkbJ+n4+vSx/2YtSJMNkYlIFoElW/oRuCg/HzhaVc9q\ngjgjqrVfg6mcdKokrZCycEkwkNTCJbSqbZRyv5/SKtsCbSq3L/drsF5oQg2379AkXNHG34wJM9iD\nqyF5eT1yWG+uai+vIpl6Q3qLvpDh0qrtg/usocda0cYjIAgi4JFDPwM9ykCv0iOCcGj7oTqVP1fU\n8YiAgKfKPsU5Vmh5c/+D7s/Pp3D9huA9OYVZWfgPHADA27lzYJkbZ2212OOOwxMd3azxmUOacojM\n78wImwI8oqqPi8iaxodoGsvrEbyetjMl1O8P6eU5CSpsLy+0NxiSoCp6d6EJNVzCK/OHS7bh21Qk\n4dJypaCkzGlTt2Rd3pwZ0yWeYCIL/DyUqJzPYZIfVRJV2ORHaJIMlFOxb88QZNhQvMMy6LZ3J/12\nbOaInd/Qd+U6UpcsBaDMG8X27v3J7jmIbb0Hsa3XIIoTkkL2fSgRV06sTjkVcVXEWDmxekISrkjV\n5C5hEnfgC3lCyz0h3yk02QfbBeocivdQLJXOtaf6PzSqP9eVYwn9b1jxs3vHWHolu3vjbF0STKmI\nTAcuB851yuyKnGlyHo8Q4/ES00auDPr9lRNUWZVeXrgh0dCEpwp+Bb8qqoHZWkrgs7/ic8j2YD30\nsHb+kJ9+Z9Ti0H4q6mrlY1LR5lB5MAa/05bDYwjkVcXvP7SfqrFU2r//UMyH6gS2Fyb0Y2OvI/hc\nJ+BXJe5gHn22bab39s302b6J0asXEfXZAgBykrvzXfcBfOu8dnbshiKVzgchMaoT4+HntXIMfn/F\nea2oU/FdDv9+rcnPTxnAzWce4+ox6vKrfAXwc+BuVf1WRPoDs12Nypg2wOMRoj1CNLael1v8RUUU\nff45BZmZJGauoceaNfzky48A8Hbs6NwE6tyTM2QInthYV+OplEDDJP3QZK9Vkl3YPxY0JKkR2r62\nZFflj4XQYzux9E5xf9mfek1TFpEUoI+qrnMvpObT2q/BGGMqU1VKvt1a6Z6cki1bAht9PmKPHRxc\nWy0+fQRRXbpENuBWqikv8n8ATCbQ28kCdgPLVfWGJogzoizBGNP2le3dG1jmZk0mBWvWULR+A1pc\nDICvT5/g4wriRqQTM2igrSBdB015kb+jqu4XkZ8Bz6rq7SLSJnowxpi2LyolhaRTx5N06ngAtKSE\noo0bKXDWVjv40cfse2s+AJ6kJGepG+eenKFD8STYUjcNVZcEE+WsTjwV+IPL8RhjjKskOpq4tDTi\n0tLgihmBpW5++KHSPTk/Pv5E4MKG10vs0UcHr+PEjRiBr0ePSH+FVqMuCeZOAve/fKSqn4nIkcAm\nd8MyxpjmISJE9+1LdN++dDzvPADK9++ncO3a4IPZ8l57jb2zA3Obonr0CK6tFjcijdijj0ai2sjU\nxyZma5HZNRhjTC20rIyiL78Krq1WkLmGsp07AfDExxM7fFhwbbW4tOF4k5IiHLG7mvIif2/gceAk\nAlPB/w38WlWza2zYCliCMcY0VOn27ZUezFb85Vfg9weWujnqqEMPZktPx9erV5ta6qYpE8wSYC7w\nglOUAVyqqhMbHWWEWYIxxjSV8oP5FK1fFxxWK8zKwp+fD4C3S+fA9GhnFenYwYORVrzUTZOuRaaq\nabWVtUaWYIwxbtHycoo3bw4+mK1wzRpKswMDPxIT46wgHbiOEz9iBN7k5AhHXHdNOU35RxHJAF50\nPk8HchsTnDHGtHXizECLPfpoUqZPB6B0Vw6Fa9Y49+RkkTtrFpSVARA9YEBgplpa4BHU0f36tfph\ntbr0YPoCTwAnELgG8zFwnap+73547rIejDEmkvyFhRSuXx+4ETQzk4KsLPz79gHgTUkJrjgQl54e\nWEE6JibCEQe4+kRLEbleVR9pUGQtiCUYY0xLon4/JVu2BB/MVpiZScl33wEgPh+xxx1X6Z6cqNTU\niMTpdoL5XlX71qHeJOBRwAs8rar3Vdk+A3gQ2OYUPaGqTzvb7gfOdsr/oqrznPIPgYo5gF2Blap6\nvvMwtLeAb51tr6vqnTXFZwnGGNPSleXmUpiVFZw8ULRhA1paCoDviL6V1laLHjCgWZa6cfuRybUO\nDIqIF5gJTASygc9EZL6qbqxSdZ6qXlul7dlAOpAGxADLRWShqu5X1ZND6r1GIKlU+FBVz2nQNzLG\nmBYoKjWVpAkTSJowAQB/SQlFGz4Prq12cMUK9r35JgCejh2JSxt+6J6cYUPxxLm/anK1sTewXV26\nPaOBzaq6BUBEXgLOA6ommHCOJbCgZhlQJiJrgUnAyxUVRCQJOJXA4wSMMaZd8ERHE58e6LGkElhB\nuvS77yrdk7N7+YpA5agoYgcPPnRPzoh0fN26Nlus1SYYETlA+EQiQF1SYi/gh5DP2cDxYepdICJj\nga+B36jqD8Ba4HYReQiIB8ZzeGKaArynqvtDyk5wktF24Heq+nkd4jTGmFZLRIju14/ofv1I/ukU\nAMrz8pylbgLXcfJefoW9zwduZfT17ElcejodzjmbpHHjXI2t2gSjqo1d6yDcMFrVhPU28KKqFovI\nz4HngFNVdbGI/ITAjLXdwH+AsiptpwNPh3zOBI5Q1YMichbwJjDosKBErgauBujbt9bLSMYY0+p4\nk5NJPOUUEk85BQAtLaXoyy+D9+QUfPopMQMHuJ5gXFuLTEROAP6sqmc4n28BUNV7q6nvBfaoascw\n2+YCs1V1gfM5lUCPp5eqFlWzv63AKFX9sboY7SK/MaY9UlUoK0N8vga1r+tFfjenG3wGDBKR/iIS\nDUwD5odWcB4DUGEy8IVT7nWSCCIyDBgGLA6pexHwTmhyEZHu4tyVJCKjCXw3uyHUGGOqEJEGJ5f6\ncG2NaVUtE5FrCSz17wVmqernInInsEpV5wPXichkAsNfe4AZTnMf8KGTL/YDGc4F/wrTgEpTnoEL\ngV+ISBlQCEzT9rxUtDHGRJgt129DZMYYUy9Ndh9MNbPJ9gGrgN9WTEM2xhhjQtVliOwhAtN+5xKY\nGTYN6A58BcwCxrkVnDHGmNarLhf5J6nq/6nqAedO+qeAs5ylW1Jcjs8YY0wrVZcE4xeRqSLicV5T\nQ7a13ws4xhhjalSXBHMpcBmQ47wuAzJEJA64tqaGxhhj2q9ar8E4F/HPrWbzv5s2HGOMMW1FrT0Y\nEektIm+ISI6I7BKR10Skd3MEZ4wxpvWqyxDZswTuwO9JYAHLt50yY4wxplp1STBdVPVZVS1zXv8E\nurgclzHGmFauLgnmRxHJcNYH84pIBrbGlzHGmFrUJcH8NzAV2AnsILDmlz3kyxhjTI1qTTCq+r2q\nTlbVLqraVVXPB37aDLEZY4xpxRq6XP8NTRqFMcaYNqehCSbc0yqNMcaYoIYmGFsixhhjTI2qvZO/\nmmX6IdB7iXMtImOMMW1CtQlGVZOaMxBjjDFtS0OHyIwxxpgaWYIxxhjjClcTjIhMEpGvRGSziNwc\nZvsMEdktIlnO62ch2+4XkQ3O6+KQ8n+KyLchbdKcchGRx5xjrRORdDe/mzHGmJrV5ZHJDSIiXmAm\nMBHIBj4TkfmqurFK1Xmqem2VtmcD6UAaEAMsF5GFqrrfqXKjqr5aZT9nAoOc1/HAk85PY4wxEeBm\nD2Y0sFlVt6hqCfAScF4d2x4LLHcW18wH1gKTamlzHvC8BnwCJItIj4YGb4wxpnHcTDC9gB9CPmc7\nZVVd4AxpvSoifZyytcCZIhIvIp2B8UCfkDZ3O20eFpGYeh7PGGNMM3AzwYS727/qfTVvA/1UdRiw\nFHgOQFUXAwuAj4EXgf8AZU6bW4BjgJ8AnYCb6nE8RORqEVklIqt2795dry9kjDGm7txMMNlU7nX0\nBraHVlDVXFUtdj7+AxgZsu1uVU1T1YkEkscmp3yHMwxWTODBZ6Prejyn/VOqOkpVR3XpYo+1McYY\nt7iZYD4DBolIfxGJBqYReDJmUJVrJJOBL5xyr4ikOu+HAcOAxaFtRESA84ENTvv5wP9zZpONAfap\n6g63vpwxxpiauTaLTFXLRORaYBHgBWap6uciciewSlXnA9eJyGQCw197gBlOcx/wYSCHsB/IUNWK\nIbI5ItKFQK8mC/i5U74AOAvYDBRgz6wxxpiIEtX2u27lqFGjdNWqVZEOwxhjWhURWa2qo2qrZ3fy\nG2OMcYUlGGOMMa6wBGOMMcYVlmCMMca4whKMMcYYV1iCMcYY4wpLMMYYY1xhCcYYY4wrLMEYY4xx\nhSUYY4wxrrAEY4wxxhWWYIwxxrjCEowxxhhXWIIxxhjjCkswxhhjXGEJxhhjjCsswRhjjHGFJRhj\njDGusARjjDHGFZZgjDHGuMLVBCMik0TkKxHZLCI3h9k+Q0R2i0iW8/pZyLb7RWSD87o4pHyOs88N\nIjJLRHxO+TgR2Reyrz+5+d2MMcbULMqtHYuIF5gJTASygc9EZL6qbqxSdZ6qXlul7dlAOpAGxADL\nRWShqu4H5gAZTtW5wM+AJ53PH6rqOa58IWOMMfXiZg9mNLBZVbeoagnwEnBeHdseCyxX1TJVzQfW\nApMAVHWBOoCVQG8XYjfGGNNIbiaYXsAPIZ+znbKqLhCRdSLyqoj0ccrWAmeKSLyIdAbGA31CGzlD\nY5cB74YUnyAia0VkoYgc12TfxBhjTL25mWAkTJlW+fw20E9VhwFLgecAVHUxsAD4GHgR+A9QVqXt\n34AVqvqh8zkTOEJVhwOPA2+GDUrkahFZJSKrdu/eXf9vZYwxpk7cTDDZVO519Aa2h1ZQ1VxVLXY+\n/gMYGbLtblVNU9WJBJLVpoptInI70AW4IaT+flU96LxfAPic3k8lqvqUqo5S1VFdunRp7Hc0xhhT\nDTcTzGfAIBHpLyLRwDRgfmgFEekR8nEy8IVT7hWRVOf9MGAYsNj5/DPgDGC6qvpD9tVdRMR5P5rA\nd8t16bsZY4yphWuzyFS1TESuBRYBXmCWqn4uIncCq1R1PnCdiEwmMPy1B5jhNPcBHzr5Yj+QoaoV\nQ2R/B74D/uNsf11V7wQuBH4hImVAITDNmQhgjDEmAqQ9/xs8atQoXbVqVaTDMMaYVkVEVqvqqNrq\n2Z38xhhjXGEJxhhjjCsswRhjjHGFJRhjjDGusARjjDHGFZZgjDHGuMISjDHGGFdYgjHGGOMKSzDG\nGGNc4dpSMW1ZVk4Wz2x4hm7x3egW342u8V3pGt81+D4xOjHSIRpjTMRZgmmA/NJ8sg9kk7krk/0l\n+w/bHh8VT7eEbpWSTmgS6hbfjU6xnfB6vBGI3hhjmoclmAY4qddJnNTrJAAKywrZXbCbXQW7yCnI\nIacgJ/h+V8EuVu5cyY8FP1KmlR9n4xUvneM6H56AEir3iuKi4iLxFY0xptEswTRSXFQcfTv0pW+H\nvtXW8aufPUV72FWwi135hyeiLfu28MmOTzhYevCwtknRScGEE244rmt8V1JiU/CIXU4zxrQslmCa\ngUc8dI7rTOe4zhyXWv2TnPNL8yv1hHIKcoIJaVfBLjbt3URuUS7+Q4/BASDKExV2KK7q+2hvtNtf\n1RhjgizBtCAJvgSO7HgkR3Y8sto6Zf4yfiz8MexwXE5BDl/u+ZIV2SsoLCs8rG1KTErYJBR6vahD\ndAec5+wYY0yjWIJpZaI8UXRP6E73hO7V1lFVDpQeICf/UBKq2jP6PPdz9hTtOaxtjDemUhLqHt/9\nsKTUOb4zPo/Pza9pjGkDLMG0QSJCh+gOdIjuwMCUgdXWKy0vJacwpCeUn1OpZ7Ru9zreK3iPEn9J\n5f0jpMalhh2OC50pZ9O1jWnfLMG0Yz6vj16JveiV2KvaOqpKXnFepWG40F7RtoPbWJOzhn3F+w5r\nGx8VHz4BhcyUS41NtenaxrRRlmBMjUSElNgUUmJTOLrT0dXWKyorCk7XDjdle9WuVewu2B12unZq\nXGqtM+XiffFuf1VjTBNzNcGIyCTgUcALPK2q91XZPgN4ENjmFD2hqk872+4HznbK/6Kq85zy/sBL\nQCcgE7hMVUtEJAZ4HhgJ5AIXq+pW976dCRUbFUufDn3o06FPtXVCp2uHXh+qSEZb923l0x2fhp+u\n7UsKTkaobqacTdc2pmVxLcGIiBeYCUwEsoHPRGS+qm6sUnWeql5bpe3ZQDqQBsQAy0VkoaruB+4H\nHlbVl0Tk78CVwJPOz72qOlBEpjn1Lnbr+5n6q+t07YLSgvA3rjpTtjfv3cyPRT+Gna7dNa7r4deD\nqiSmGG+M21/VGIO7PZjRwGZV3QIgIi8B5wFVE0w4xwLLVbUMKBORtcAkEXkFOBW4xKn3HPBnAgnm\nPOc9wKvAEyIiqqpN83VMc4n3xdO/Y3/6d+xfbZ0yfxm5hbnBJLSzYGelWXJf7/2aD7d9GHa6dnJM\n8mETEqompY4xHW26tjGN5GaC6QX8EPI5Gzg+TL0LRGQs8DXwG1X9AVgL3C4iDwHxwHgCiSkVyHMS\nT8U+K65QB4+nqmUiss+p/2OTfivTIkR5ogKTBRK6VVtHVTlYerDSzaqVbmIt2MXG3I11mq4d7tpQ\nl7gu+Lw2XduY6riZYML9+Ve1N/E28KKqFovIzwn0SE5V1cUi8hPgY2A38B+grJZ91uV4iMjVwNUA\nfftWv7yLaf1EhKToJJKik2qdrr27cHf4mXL5u1i/e32107U7xXaqdaZcoi/RekOmXXIzwWQDoVd8\newPbQyuoam7Ix38QuG5Sse1u4G4AEZkLbCLQG0kWkSinFxO6z4rjZYtIFNAROOxPU1V9CngKYNSo\nUTZ8ZvB5ffRM7EnPxJ7V1lFV9hXvq3ZR0+3528nanUVecd5hbeOi4sL2gELLOsd1tunaps1xM8F8\nBgxyZn1tA6Zx6NoJACLSQ1V3OB8nA1845V4gWVVzRWQYMAxYrKoqIsuACwnMJLsceMtpP9/5/B9n\n+/t2/cU0FREhOTaZ5NjkGqdrF5cXV5qQULVXlLkrk5yCnMOma3vEQ+fYzsEJCV3iupAUnUS8L54E\nXwLxUYd+xvviK5XH++KJ9kRbL8m0OK4lGOc6yLXAIgLTlGep6uciciewSlXnA9eJyGQCw197gBlO\ncx/wofMLsx/ICLnuchPwkojcBawBnnHKnwFeEJHNzr6mufXdjKlOjDeGPkl96JNU+3TtqteDKhLT\n1n1bWblzJfml+YfNlKtOlEQR54urPhlFJQTfV5RXlFWq67SNi4qzHpVpNGnPf+SPGjVKV61aFekw\njAlLVSkuLya/NJ+CsgIKSgsoKCsIfA55X1hWGCyrqW5BaQFF5UV1Pn5cVBxxUZWTVpwvrlICS/Al\nVE5aoXUr2jrl1stqO0RktaqOqq2e3clvTAslIsRGxRIbFUsqqU2yzzJ/GYVlhYFkVJZPYWlhMClV\nSk4hySq0fF/RPnaU7ahUVq7ldTq2V7w19qoOS1oViStMWUVd62W1bJZgjGlHojxRwZl1TUFVKfGX\nVOpBBXtUYXpQoWUVCW7HwR2VemPh7l2qTqw3NmwPqqay0F5V1fIYb4z1spqQJZiG2LEO1r4Inijw\nRoPXF3h5fFXeV90WDV6nzWF1K17Rlffr8YHHlj8xLZOIEOONIcYbQ6fYTk2yz3J/eaUkFZqgqu1t\nleUH3+8v2c+O/B2Vkllde1ke8YRPRlEJdbvGFaa3FeVpv//Mtt9v3hh538GaOVBeAv5S8JfV3qYx\nxBuScMIltWoSVzBZhUlc9U56NSTBmpKr/TVo6snr8ZIYndhkj3uo6GUddl0q9HOY3lZoEttZsLNS\nWX16WTHemLDJqNJ1qtp6WyEJLtYb22p6WZZgGmLwuYFXBb8/kGQqEk55xavkUHl5aeX35aVO3XCf\nw+yrpv1WbVuSX/e2dfzLrsE8UdUkspoSYjVJsE7JtAl7lK3kl9jULLSXlUJKk+yz3F9OUXlRpeG+\nw5JWyDBg1bKDJYEVJkLLq05dr06wlxWStGqaxn7YhAsnwaXGppIcm9wk56M6lmCagscDnmiIaoXP\nvPf7a050NSW9wxJdXRNqDfsqOVi3tuUlhFmooWl5wiWy6pJefXp+dUymnigQD3i8gWQnXue9p8p7\nT93Kg5+d/QXfe6q8tyHZ2ng9XhI8CST4EppsnyXlJZWSVU1DhIclstJ8cgpyKvXGautlXTHkCm4Y\neUOTxR+OJZj2zuMBTwxEtcIVhv3l1SS2evT2wvYU65pQqxyrrKjubd1Ojo1VXeKpVF6R0DxhkltN\n5SEJs9Zj1FZeU5JtYFIOe4w6JOV6nZvD44sWL9HRSSTHdGyS3rNf/cEZg+GGAI/ocEQT/I9SM0sw\npvXyOL+cvthIR1I/qoHkGDaxhSQk9QeGMP3+Q+/VH2gbfF/f8vLA8bXcee8PeV9duT+kbZjysMeo\npby8pvr1OHa48paevOtECN/7rC4BHl7u8XhJEA8J1SXToRdC6mBXv4UlGGOam4hz7ScKfHGRjqbt\nUa0muZUfSu51SsphEnx9k3K9km9N8Wk1x6gpvmrKg3/guHz9FUswxpi2JnToyUSUXc0zxhjjCksw\nxhhjXGEJxhhjjCsswRhjjHGFJRhjjDGusARjjDHGFZZgjDHGuMISjDHGGFe060cmi8hu4LsGNu8M\n/NiE4TSVlhoXtNzYLK76sbjqpy3GdYSqdqmtUrtOMI0hIqvq8kzq5tZS44KWG5vFVT8WV/2057hs\niMwYY4wrLMEYY4xxhSWYhnsq0gFUo6XGBS03Nourfiyu+mm3cdk1GGOMMa6wHowxxhhXWIKphYjM\nEpEcEdlQzXYRkcdEZLOIrBOR9BYS1zgR2SciWc7rT80QUx8RWSYiX4jI5yLy6zB1mv181TGuSJyv\nWBFZKSJrnbjuCFMnRkTmOefrUxHp10LimiEiu0PO18/cjivk2F4RWSMi74TZ1uznq45xRfJ8bRWR\n9c5xV4XZ7t7vpKraq4YXMBZIBzZUs/0sYCEgwBjg0xYS1zjgnWY+Vz2AdOd9EvA1cGykz1cd44rE\n+RIg0XnvAz4FxlSpcw3wd+f9NGBeC4lrBvBEc56vkGPfAMwN998rEuerjnFF8nxtBTrXsN2130nr\nwdRCVVcAe2qoch7wvAZ8AiSLSI8WEFezU9UdqprpvD8AfAH0qlKt2c9XHeNqds45OOh89DmvqhdF\nzwOec96/CkwQEWkBcUWEiPQGzgaerqZKs5+vOsbVkrn2O2kJpvF6AT+EfM6mBfzj5TjBGeZYKCLH\nNeeBnaGJEQT++g0V0fNVQ1wQgfPlDKtkATnAElWt9nypahmwD0htAXEBXOAMqbwqIn3cjsnxCPB7\nwF/N9oicrzrEBZE5XxD442CxiKwWkavDbHftd9ISTOOF++uoJfy1l0lgOYfhwOPAm811YBFJBF4D\nrlfV/VU3h2nSLOerlrgicr5UtVxV04DewGgRGVKlSkTOVx3iehvop6rDgKUc6jW4RkTOAXJUdXVN\n1cKUuXq+6hhXs5+vECepajpwJvBLERlbZbtr58wSTONlA6F/jfQGtkcoliBV3V8xzKGqCwCfiHR2\n+7gi4iPwj/gcVX09TJWInK/a4orU+Qo5fh7wATCpyqbg+RKRKKAjzTg0Wl1cqpqrqsXOx38AI5sh\nnJOAySKyFXgJOFVEZlepE4nzVWtcETpfFcfe7vzMAd4ARlep4trvpCWYxpsP/D9nJsYYYJ+q7oh0\nUCLSvWLsWURGE/hvnevyMQV4BvhCVR+qplqzn6+6xBWh89VFRJKd93HAacCXVarNBy533l8IvK/O\nldlIxlVljH4ygetarlLVW1S1t6r2I3AB/31VzahSrdnPV13iisT5co6bICJJFe+B04GqM09d+52M\naoqdtGUi8iKBGUadRSQbuJ3ARU9U9e/AAgKzMDYDBcAVLSSuC4FfiEgZUAhMc/sXjcBfcpcB653x\ne4Bbgb4hcUXifNUlrkicrx7AcyLiJZDQXlbVd0TkTmCVqs4nkBhfEJHNBP4Sn+ZyTHWN6zoRmQyU\nOXHNaIa4wmoB56sucUXqfHUD3nD+dooC5qrquyLyc3D/d9Lu5DfGGOMKGyIzxhjjCkswxhhjXGEJ\nxhhjjCsswRhjjHGFJRhjjDGusARjjDHGFZZgjGkFnCXXG7SygLNUfM+m2Jcx9WEJxpi2bwbQs7ZK\nxjQ1SzDG1IOI9BORL0XkaRHZICJzROQ0EflIRDaJyGjn9bEEHj71sYgc7bS9QURmOe+HOu3jqzlO\nqogsdvbxf4QsSCgiGRJ4IFiWiPyfc8c9InJQRP5XRDJF5D1nyZcLgVHAHKd+nLObXzn11ovIMW6e\nM9N+WYIxpv4GAo8Cw4BjgEuA/wJ+R2AJmi+Bsao6AvgTcI/T7hFgoIhMAZ4F/kdVC6o5xu3Av519\nzMdZ1kZEBgMXE1ghNw0oBy512iQAmc7KucuB21X1VWAVcKmqpqlqoVP3R6fek07cxjQ5W4vMmPr7\nVlXXA4jI58B7qqoish7oR2AF3+dEZBCBZc8r1ojzi8gMYB3wf6r6UQ3HGAv81Gn3LxHZ65RPILAS\n72fO+lJxBJ7ZAoFnkcxz3s8Gwq1mXaFi2+qK4xjT1CzBGFN/xSHv/SGf/QR+p/4CLFPVKRJ4wNkH\nIfUHAQep2zWRcAsFCvCcqt7SwPYVKmIux/4dMC6xITJjml5HYJvzfkZFoYh0JDC0NhZIda6PVGcF\nztCXiJwJpDjl7wEXikhXZ1snETnC2eYhsCo0BIbt/u28PwAkNeL7GNMglmCMaXoPAPeKyEeAN6T8\nYeBvqvo1cCVwX0WiCH6HeO0AAACLSURBVOMOYKyIZBJ4hsf3AKq6EbiNwCNw1wFLCCyvD5APHCci\nq4FTgTud8n8Cf69ykd8Y19ly/ca0ESJyUFUTIx2HMRWsB2OMMcYV1oMxJoJE5Arg11WKP1LVX0Yi\nHmOakiUYY4wxrrAhMmOMMa6wBGOMMcYVlmCMMca4whKMMcYYV1iCMcYY44r/D9vxSeDlNwuaAAAA\nAElFTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f5b573cdb00>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# summarize results\n",
    "print(\"Best: %f using %s\" % (gsearch2_1.best_score_, gsearch2_1.best_params_))\n",
    "test_means = gsearch2_1.cv_results_[ 'mean_test_score' ]\n",
    "test_stds = gsearch2_1.cv_results_[ 'std_test_score' ]\n",
    "train_means = gsearch2_1.cv_results_[ 'mean_train_score' ]\n",
    "train_stds = gsearch2_1.cv_results_[ 'std_train_score' ]\n",
    "\n",
    "pd.DataFrame(gsearch2_1.cv_results_).to_csv('my_preds_maxdepth_min_child_weights_1.csv')\n",
    "\n",
    "# plot results\n",
    "test_scores = np.array(test_means).reshape(len(max_depth), len(min_child_weight))\n",
    "train_scores = np.array(train_means).reshape(len(max_depth), len(min_child_weight))\n",
    "\n",
    "for i, value in enumerate(max_depth):\n",
    "    pyplot.plot(min_child_weight, -test_scores[i], label= 'test_max_depth:'   + str(value))\n",
    "#for i, value in enumerate(min_child_weight):\n",
    "#    pyplot.plot(max_depth, train_scores[i], label= 'train_min_child_weight:'   + str(value))\n",
    "    \n",
    "pyplot.legend()\n",
    "pyplot.xlabel( 'max_depth' )                                                                                                      \n",
    "pyplot.ylabel( 'Log Loss' )\n",
    "pyplot.savefig('max_depth_vs_min_child_weght_1.png' )"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": true
   },
   "source": [
    "得到最佳的max_depth和min_child_weight均为5"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
